#include "config.h"
-#include <gtk/gtk.h>
-#include <gtkmarshalers.h>
+#include "gtklistbox.h"
+#include "gtkwidget.h"
+#include "gtkmarshalers.h"
+#include "gtkprivate.h"
+#include "gtkintl.h"
+
#include <float.h>
#include <math.h>
#include <string.h>
* widget will automatically be inserted between the list and the widget.
*
* The GtkListBox widget was added in GTK+ 3.10.
-*/
+ */
struct _GtkListBoxPrivate
{
static void gtk_list_box_update_selected (GtkListBox *list_box,
GtkListBoxRow *row);
static void gtk_list_box_apply_filter_all (GtkListBox *list_box);
-static void gtk_list_box_update_header (GtkListBox *list_box,
+static void gtk_list_box_update_header (GtkListBox *list_box,
GSequenceIter *iter);
static GSequenceIter * gtk_list_box_get_next_visible (GtkListBox *list_box,
GSequenceIter *_iter);
static void gtk_list_box_real_forall_internal (GtkContainer *container,
gboolean include_internals,
GtkCallback callback,
- void *callback_target);
+ gpointer callback_target);
static void gtk_list_box_real_compute_expand_internal (GtkWidget *widget,
gboolean *hexpand,
gboolean *vexpand);
properties[PROP_SELECTION_MODE] =
g_param_spec_enum ("selection-mode",
- "Selection mode",
- "The selection mode",
+ P_("Selection mode"),
+ P_("The selection mode"),
GTK_TYPE_SELECTION_MODE,
GTK_SELECTION_SINGLE,
G_PARAM_READWRITE);
properties[PROP_ACTIVATE_ON_SINGLE_CLICK] =
g_param_spec_boolean ("activate-on-single-click",
- "Activate on Single Click",
- "Activate row on a single click",
+ P_("Activate on Single Click"),
+ P_("Activate row on a single click"),
TRUE,
G_PARAM_READWRITE);
g_cclosure_marshal_VOID__OBJECT,
G_TYPE_NONE, 1,
GTK_TYPE_LIST_BOX_ROW);
+
/**
* GtkListBox::row-activated:
* @list_box: the #GtkListBox
/**
* gtk_list_box_get_selected_row:
- * @list_box: An #GtkListBox.
+ * @list_box: a #GtkListBox
*
* Gets the selected row.
*
- * Return value: (transfer none): The selected #GtkWidget.
+ * Return value: (transfer none): the selected #GtkWidget
*
* Since: 3.10
- **/
+ */
GtkListBoxRow *
gtk_list_box_get_selected_row (GtkListBox *list_box)
{
/**
* gtk_list_box_get_row_at_index:
- * @list_box: An #GtkListBox.
- * @index: the index of the row
+ * @list_box: a #GtkListBox
+ * @index_: the index of the row
*
* Gets the n:th child in the list (not counting headers).
*
- * Return value: (transfer none): The child #GtkWidget.
+ * Return value: (transfer none): the child #GtkWidget
*
* Since: 3.10
- **/
+ */
GtkListBoxRow *
-gtk_list_box_get_row_at_index (GtkListBox *list_box, gint index)
+gtk_list_box_get_row_at_index (GtkListBox *list_box,
+ gint index_)
{
GtkListBoxPrivate *priv = list_box->priv;
GSequenceIter *iter;
g_return_val_if_fail (list_box != NULL, NULL);
- iter = g_sequence_get_iter_at_pos (priv->children, index);
+ iter = g_sequence_get_iter_at_pos (priv->children, index_);
if (iter)
return g_sequence_get (iter);
/**
* gtk_list_box_get_row_at_y:
- * @list_box: An #GtkListBox.
+ * @list_box: a #GtkListBox
* @y: position
*
* Gets the row at the @y position.
*
- * Return value: (transfer none): The row.
+ * Return value: (transfer none): the row
*
* Since: 3.10
- **/
+ */
GtkListBoxRow *
-gtk_list_box_get_row_at_y (GtkListBox *list_box, gint y)
+gtk_list_box_get_row_at_y (GtkListBox *list_box,
+ gint y)
{
GtkListBoxRow *row, *found_row;
GtkListBoxRowPrivate *row_priv;
* Since: 3.10
*/
void
-gtk_list_box_select_row (GtkListBox *list_box, GtkListBoxRow *row)
+gtk_list_box_select_row (GtkListBox *list_box,
+ GtkListBoxRow *row)
{
g_return_if_fail (list_box != NULL);
* Since: 3.10
*/
void
-gtk_list_box_set_placeholder (GtkListBox *list_box, GtkWidget *placeholder)
+gtk_list_box_set_placeholder (GtkListBox *list_box,
+ GtkWidget *placeholder)
{
GtkListBoxPrivate *priv = list_box->priv;
/**
* gtk_list_box_set_adjustment:
* @list_box: a #GtkListBox
- * @adjustment: (allow-none): The adjustment or %NULL
+ * @adjustment: (allow-none): the adjustment, or %NULL
*
* Sets the adjustment (if any) that the widget uses to
* for vertical scrolling. For instance, this is used
* Since: 3.10
*/
void
-gtk_list_box_set_adjustment (GtkListBox *list_box,
+gtk_list_box_set_adjustment (GtkListBox *list_box,
GtkAdjustment *adjustment)
{
GtkListBoxPrivate *priv = list_box->priv;
* Gets the adjustment (if any) that the widget uses to
* for vertical scrolling.
*
- * Return value: (transfer none): The adjustment.
+ * Return value: (transfer none): the adjustment
*
* Since: 3.10
*/
}
static void
-gtk_list_box_real_parent_set (GtkWidget *widget,
- GtkWidget *prev_parent)
+gtk_list_box_real_parent_set (GtkWidget *widget,
+ GtkWidget *prev_parent)
{
GtkWidget *parent;
GtkAdjustment *adjustment;
* Since: 3.10
*/
void
-gtk_list_box_set_selection_mode (GtkListBox *list_box, GtkSelectionMode mode)
+gtk_list_box_set_selection_mode (GtkListBox *list_box,
+ GtkSelectionMode mode)
{
GtkListBoxPrivate *priv = list_box->priv;
/**
* gtk_list_box_set_filter_func:
* @list_box: a #GtkListBox
- * @filter_func: (closure user_data) (allow-none): Callback that lets you filter which rows to show
+ * @filter_func: (closure user_data) (allow-none): callback that lets you filter which rows to show
* @user_data: user data passed to @filter_func
* @destroy: destroy notifier for @user_data
*
* Since: 3.10
*/
void
-gtk_list_box_set_filter_func (GtkListBox *list_box,
- GtkListBoxFilterFunc filter_func,
- gpointer user_data,
- GDestroyNotify destroy)
+gtk_list_box_set_filter_func (GtkListBox *list_box,
+ GtkListBoxFilterFunc filter_func,
+ gpointer user_data,
+ GDestroyNotify destroy)
{
GtkListBoxPrivate *priv = list_box->priv;
/**
* gtk_list_box_set_header_func:
* @list_box: a #GtkListBox
- * @update_header: (closure user_data) (allow-none): Callback that lets you add row headers
+ * @update_header: (closure user_data) (allow-none): callback that lets you add row headers
* @user_data: user data passed to @update_header
* @destroy: destroy notifier for @user_data
*
* Since: 3.10
*/
void
-gtk_list_box_set_header_func (GtkListBox *list_box,
- GtkListBoxUpdateHeaderFunc update_header,
- gpointer user_data,
- GDestroyNotify destroy)
+gtk_list_box_set_header_func (GtkListBox *list_box,
+ GtkListBoxUpdateHeaderFunc update_header,
+ gpointer user_data,
+ GDestroyNotify destroy)
{
GtkListBoxPrivate *priv = list_box->priv;
/**
* gtk_list_box_set_sort_func:
* @list_box: a #GtkListBox
- * @sort_func: (closure user_data) (allow-none):
+ * @sort_func: (closure user_data) (allow-none): the sort function
* @user_data: user data passed to @sort_func
* @destroy: destroy notifier for @user_data
*
* Since: 3.10
*/
void
-gtk_list_box_set_sort_func (GtkListBox *list_box,
- GtkListBoxSortFunc sort_func,
- gpointer user_data,
- GDestroyNotify destroy)
+gtk_list_box_set_sort_func (GtkListBox *list_box,
+ GtkListBoxSortFunc sort_func,
+ gpointer user_data,
+ GDestroyNotify destroy)
{
GtkListBoxPrivate *priv = list_box->priv;
}
static void
-gtk_list_box_got_row_changed (GtkListBox *list_box, GtkListBoxRow *row)
+gtk_list_box_got_row_changed (GtkListBox *list_box,
+ GtkListBoxRow *row)
{
GtkListBoxPrivate *priv = list_box->priv;
GSequenceIter *prev_next, *next;
* @list_box: a #GtkListBox
* @single: a boolean
*
- * If @single is %TRUE, rows will be activated when you click on them, otherwise
- * you need to double-click.
+ * If @single is %TRUE, rows will be activated when you click on them,
+ * otherwise you need to double-click.
*
* Since: 3.10
*/
void
gtk_list_box_set_activate_on_single_click (GtkListBox *list_box,
- gboolean single)
+ gboolean single)
{
GtkListBoxPrivate *priv = list_box->priv;
static void
-gtk_list_box_add_move_binding (GtkBindingSet *binding_set,
- guint keyval,
- GdkModifierType modmask,
- GtkMovementStep step,
- gint count)
+gtk_list_box_add_move_binding (GtkBindingSet *binding_set,
+ guint keyval,
+ GdkModifierType modmask,
+ GtkMovementStep step,
+ gint count)
{
gtk_binding_entry_add_signal (binding_set, keyval, modmask,
"move-cursor", (guint) 2, GTK_TYPE_MOVEMENT_STEP, step, G_TYPE_INT, count, NULL);
}
static void
-gtk_list_box_update_cursor (GtkListBox *list_box,
+gtk_list_box_update_cursor (GtkListBox *list_box,
GtkListBoxRow *row)
{
GtkListBoxPrivate *priv = list_box->priv;
}
static void
-gtk_list_box_update_selected (GtkListBox *list_box,
+gtk_list_box_update_selected (GtkListBox *list_box,
GtkListBoxRow *row)
{
GtkListBoxPrivate *priv = list_box->priv;
}
static void
-gtk_list_box_select_and_activate (GtkListBox *list_box, GtkListBoxRow *row)
+gtk_list_box_select_and_activate (GtkListBox *list_box,
+ GtkListBoxRow *row)
{
gtk_list_box_update_selected (list_box, row);
}
static void
-gtk_list_box_update_prelight (GtkListBox *list_box, GtkListBoxRow *row)
+gtk_list_box_update_prelight (GtkListBox *list_box,
+ GtkListBoxRow *row)
{
GtkListBoxPrivate *priv = list_box->priv;
}
static void
-gtk_list_box_update_active (GtkListBox *list_box, GtkListBoxRow *row)
+gtk_list_box_update_active (GtkListBox *list_box,
+ GtkListBoxRow *row)
{
GtkListBoxPrivate *priv = list_box->priv;
gboolean val;
}
static gboolean
-gtk_list_box_real_enter_notify_event (GtkWidget *widget,
+gtk_list_box_real_enter_notify_event (GtkWidget *widget,
GdkEventCrossing *event)
{
GtkListBox *list_box = GTK_LIST_BOX (widget);
}
static gboolean
-gtk_list_box_real_leave_notify_event (GtkWidget *widget,
+gtk_list_box_real_leave_notify_event (GtkWidget *widget,
GdkEventCrossing *event)
{
GtkListBox *list_box = GTK_LIST_BOX (widget);
}
static gboolean
-gtk_list_box_real_motion_notify_event (GtkWidget *widget,
+gtk_list_box_real_motion_notify_event (GtkWidget *widget,
GdkEventMotion *event)
{
GtkListBox *list_box = GTK_LIST_BOX (widget);
}
static gboolean
-gtk_list_box_real_button_press_event (GtkWidget *widget,
+gtk_list_box_real_button_press_event (GtkWidget *widget,
GdkEventButton *event)
{
GtkListBox *list_box = GTK_LIST_BOX (widget);
}
static gboolean
-gtk_list_box_real_button_release_event (GtkWidget *widget,
+gtk_list_box_real_button_release_event (GtkWidget *widget,
GdkEventButton *event)
{
GtkListBox *list_box = GTK_LIST_BOX (widget);
}
static gboolean
-gtk_list_box_real_focus (GtkWidget* widget, GtkDirectionType direction)
+gtk_list_box_real_focus (GtkWidget *widget,
+ GtkDirectionType direction)
{
GtkListBox *list_box = GTK_LIST_BOX (widget);
GtkListBoxPrivate *priv = list_box->priv;
next_focus_row = NULL;
if (focus_child != NULL)
{
- GSequenceIter* i;
+ GSequenceIter *i;
if (gtk_widget_child_focus (focus_child, direction))
return TRUE;
}
static gboolean
-gtk_list_box_real_draw (GtkWidget* widget, cairo_t* cr)
+gtk_list_box_real_draw (GtkWidget *widget,
+ cairo_t *cr)
{
GtkAllocation allocation;
GtkStyleContext *context;
}
static void
-gtk_list_box_real_realize (GtkWidget* widget)
+gtk_list_box_real_realize (GtkWidget *widget)
{
GtkListBox *list_box = GTK_LIST_BOX (widget);
GtkAllocation allocation;
}
static void
-list_box_add_visible_rows (GtkListBox *list_box, int n)
+list_box_add_visible_rows (GtkListBox *list_box,
+ gint n)
{
GtkListBoxPrivate *priv = list_box->priv;
int was_zero;
}
/* Children are visible if they are shown by the app (visible)
- and not filtered out (child_visible) by the listbox */
+ * and not filtered out (child_visible) by the listbox
+ */
static void
-update_row_is_visible (GtkListBox *list_box, GtkListBoxRow *row)
+update_row_is_visible (GtkListBox *list_box,
+ GtkListBoxRow *row)
{
gboolean was_visible;
}
static void
-gtk_list_box_apply_filter (GtkListBox *list_box, GtkListBoxRow *row)
+gtk_list_box_apply_filter (GtkListBox *list_box,
+ GtkListBoxRow *row)
{
GtkListBoxPrivate *priv = list_box->priv;
gboolean do_show;
return NULL;
}
-static GSequenceIter*
-gtk_list_box_get_previous_visible (GtkListBox *list_box,
- GSequenceIter* iter)
+static GSequenceIter *
+gtk_list_box_get_previous_visible (GtkListBox *list_box,
+ GSequenceIter *iter)
{
GtkListBoxRow *row;
return NULL;
}
-static GSequenceIter*
-gtk_list_box_get_next_visible (GtkListBox *list_box, GSequenceIter* iter)
+static GSequenceIter *
+gtk_list_box_get_next_visible (GtkListBox *list_box,
+ GSequenceIter *iter)
{
GtkListBoxRow *row;
}
static void
-gtk_list_box_update_header (GtkListBox *list_box, GSequenceIter* iter)
+gtk_list_box_update_header (GtkListBox *list_box,
+ GSequenceIter *iter)
{
GtkListBoxPrivate *priv = list_box->priv;
GtkListBoxRow *row;
}
static void
-gtk_list_box_row_visibility_changed (GtkListBox *list_box, GtkListBoxRow *row)
+gtk_list_box_row_visibility_changed (GtkListBox *list_box,
+ GtkListBoxRow *row)
{
update_row_is_visible (list_box, row);
}
static void
-gtk_list_box_real_add (GtkContainer* container, GtkWidget *child)
+gtk_list_box_real_add (GtkContainer *container,
+ GtkWidget *child)
{
GtkListBox *list_box = GTK_LIST_BOX (container);
GtkListBoxPrivate *priv = list_box->priv;
}
static void
-gtk_list_box_real_remove (GtkContainer* container, GtkWidget* child)
+gtk_list_box_real_remove (GtkContainer *container,
+ GtkWidget *child)
{
GtkListBox *list_box = GTK_LIST_BOX (container);
GtkListBoxPrivate *priv = list_box->priv;
gtk_widget_queue_resize (GTK_WIDGET (list_box));
}
-
static void
-gtk_list_box_real_forall_internal (GtkContainer* container,
- gboolean include_internals,
- GtkCallback callback,
- void* callback_target)
+gtk_list_box_real_forall_internal (GtkContainer *container,
+ gboolean include_internals,
+ GtkCallback callback,
+ gpointer callback_target)
{
GtkListBox *list_box = GTK_LIST_BOX (container);
GtkListBoxPrivate *priv = list_box->priv;
}
static void
-gtk_list_box_real_compute_expand_internal (GtkWidget* widget,
- gboolean* hexpand,
- gboolean* vexpand)
+gtk_list_box_real_compute_expand_internal (GtkWidget *widget,
+ gboolean *hexpand,
+ gboolean *vexpand)
{
GTK_WIDGET_CLASS (gtk_list_box_parent_class)->compute_expand (widget,
hexpand, vexpand);
}
static GType
-gtk_list_box_real_child_type (GtkContainer* container)
+gtk_list_box_real_child_type (GtkContainer *container)
{
- /* We really support any type but we wrap it in a row. But that is more
- like a C helper function, in an abstract sense we only support
- row children, so that is what tools accessing this should use. */
+ /* We really support any type but we wrap it in a row. But that is
+ * more like a C helper function, in an abstract sense we only support
+ * row children, so that is what tools accessing this should use.
+ */
return GTK_TYPE_LIST_BOX_ROW;
}
static GtkSizeRequestMode
-gtk_list_box_real_get_request_mode (GtkWidget* widget)
+gtk_list_box_real_get_request_mode (GtkWidget *widget)
{
return GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH;
}
static void
-gtk_list_box_real_get_preferred_height (GtkWidget* widget,
- gint* minimum_height,
- gint* natural_height)
+gtk_list_box_real_get_preferred_height (GtkWidget *widget,
+ gint *minimum_height,
+ gint *natural_height)
{
gint natural_width;
gtk_list_box_real_get_preferred_width (widget, NULL, &natural_width);
}
static void
-gtk_list_box_real_get_preferred_height_for_width (GtkWidget* widget, gint width,
- gint* minimum_height_out, gint* natural_height_out)
+gtk_list_box_real_get_preferred_height_for_width (GtkWidget *widget,
+ gint width,
+ gint *minimum_height_out,
+ gint *natural_height_out)
{
GtkListBox *list_box = GTK_LIST_BOX (widget);
GtkListBoxPrivate *priv = list_box->priv;
minimum_height += row_min;
}
- /* We always allocate the minimum height, since handling
- expanding rows is way too costly, and unlikely to
- be used, as lists are generally put inside a scrolling window
- anyway.
- */
+ /* We always allocate the minimum height, since handling expanding rows is way too costly,
+ * and unlikely to be used, as lists are generally put inside a scrolling window anyway.
+ */
natural_height = minimum_height;
if (minimum_height_out)
*minimum_height_out = minimum_height;
}
static void
-gtk_list_box_real_get_preferred_width (GtkWidget* widget, gint* minimum_width_out, gint* natural_width_out)
+gtk_list_box_real_get_preferred_width (GtkWidget *widget,
+ gint *minimum_width_out,
+ gint *natural_width_out)
{
GtkListBox *list_box = GTK_LIST_BOX (widget);
GtkListBoxPrivate *priv = list_box->priv;
{
row = g_sequence_get (iter);
- /* We *do* take visible but filtered rows into account here so that the list
- width doesn't change during filtering */
+ /* We *do* take visible but filtered rows into account here so that
+ * the list width doesn't change during filtering
+ */
if (!gtk_widget_get_visible (GTK_WIDGET (row)))
continue;
}
static void
-gtk_list_box_real_get_preferred_width_for_height (GtkWidget *widget, gint height,
- gint *minimum_width, gint *natural_width)
+gtk_list_box_real_get_preferred_width_for_height (GtkWidget *widget,
+ gint height,
+ gint *minimum_width,
+ gint *natural_width)
{
GtkListBox *list_box = GTK_LIST_BOX (widget);
gtk_list_box_real_get_preferred_width (GTK_WIDGET (list_box), minimum_width, natural_width);
}
static void
-gtk_list_box_real_size_allocate (GtkWidget *widget, GtkAllocation *allocation)
+gtk_list_box_real_size_allocate (GtkWidget *widget,
+ GtkAllocation *allocation)
{
GtkListBox *list_box = GTK_LIST_BOX (widget);
GtkListBoxPrivate *priv = list_box->priv;
* it will have the highlight removed.
*
* Since: 3.10
- **/
+ */
void
gtk_list_box_drag_unhighlight_row (GtkListBox *list_box)
{
* a drag leave event.
*
* Since: 3.10
- **/
+ */
void
-gtk_list_box_drag_highlight_row (GtkListBox *list_box, GtkListBoxRow *row)
+gtk_list_box_drag_highlight_row (GtkListBox *list_box,
+ GtkListBoxRow *row)
{
GtkListBoxPrivate *priv = list_box->priv;
}
static void
-gtk_list_box_real_drag_leave (GtkWidget *widget, GdkDragContext *context, guint time_)
+gtk_list_box_real_drag_leave (GtkWidget *widget,
+ GdkDragContext *context,
+ guint time_)
{
GtkListBox *list_box = GTK_LIST_BOX (widget);
}
static void
-gtk_list_box_real_move_cursor (GtkListBox *list_box,
- GtkMovementStep step,
- gint count)
+gtk_list_box_real_move_cursor (GtkListBox *list_box,
+ GtkMovementStep step,
+ gint count)
{
GtkListBoxPrivate *priv = list_box->priv;
GdkModifierType state;
static void
gtk_list_box_row_set_property (GObject *obj,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec)
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
{
switch (property_id)
{
}
static gboolean
-gtk_list_box_row_real_focus (GtkWidget* widget, GtkDirectionType direction)
+gtk_list_box_row_real_focus (GtkWidget *widget,
+ GtkDirectionType direction)
{
GtkListBoxRow *row = GTK_LIST_BOX_ROW (widget);
gboolean had_focus = FALSE;
}
static gboolean
-gtk_list_box_row_real_draw (GtkWidget* widget, cairo_t* cr)
+gtk_list_box_row_real_draw (GtkWidget *widget,
+ cairo_t *cr)
{
GtkListBoxRow *row = GTK_LIST_BOX_ROW (widget);
GtkAllocation allocation = {0};
static void
gtk_list_box_row_get_full_border (GtkListBoxRow *row,
- GtkBorder *full_border)
+ GtkBorder *full_border)
{
GtkWidget *widget = GTK_WIDGET (row);
GtkStyleContext *context;
gint* minimum_width_out, gint* natural_width_out);
static void
-gtk_list_box_row_real_get_preferred_height (GtkWidget* widget,
- gint* minimum_height,
- gint* natural_height)
+gtk_list_box_row_real_get_preferred_height (GtkWidget *widget,
+ gint *minimum_height,
+ gint *natural_height)
{
gint natural_width;
gtk_list_box_row_real_get_preferred_width (widget, NULL, &natural_width);
}
static void
-gtk_list_box_row_real_get_preferred_height_for_width (GtkWidget* widget, gint width,
- gint* minimum_height_out, gint* natural_height_out)
+gtk_list_box_row_real_get_preferred_height_for_width (GtkWidget *widget,
+ gint width,
+ gint *minimum_height_out,
+ gint *natural_height_out)
{
GtkListBoxRow *row = GTK_LIST_BOX_ROW (widget);
GtkWidget *child;
}
static void
-gtk_list_box_row_real_get_preferred_width (GtkWidget* widget, gint* minimum_width_out, gint* natural_width_out)
+gtk_list_box_row_real_get_preferred_width (GtkWidget *widget,
+ gint *minimum_width_out,
+ gint *natural_width_out)
{
GtkListBoxRow *row = GTK_LIST_BOX_ROW (widget);
GtkWidget *child;
}
static void
-gtk_list_box_row_real_get_preferred_width_for_height (GtkWidget *widget, gint height,
- gint *minimum_width, gint *natural_width)
+gtk_list_box_row_real_get_preferred_width_for_height (GtkWidget *widget,
+ gint height,
+ gint *minimum_width,
+ gint *natural_width)
{
gtk_list_box_row_real_get_preferred_width (widget, minimum_width, natural_width);
}
static void
-gtk_list_box_row_real_size_allocate (GtkWidget *widget, GtkAllocation *allocation)
+gtk_list_box_row_real_size_allocate (GtkWidget *widget,
+ GtkAllocation *allocation)
{
GtkListBoxRow *row = GTK_LIST_BOX_ROW (widget);
GtkWidget *child;
* This generally means that if you don't fully control the data
* model you have to duplicate the data that affects the listbox
* row functions into the row widgets themselves. Another alternative
- * is to call gtk_list_box_invalidate_sort() on any model change, but that is
- * more expensive.
+ * is to call gtk_list_box_invalidate_sort() on any model change,
+ * but that is more expensive.
*
* Since: 3.10
*/
* in a @GtkListBoxUpdateSeparatorFunc to see if there is a header
* set already, and if so to update the state of it.
*
- * Return value: (transfer none): The current header, or %NULL if none
+ * Return value: (transfer none): the current header, or %NULL if none
*
* Since: 3.10
*/
/**
* gtk_list_box_row_set_header:
* @row: a #GtkListBoxRow
- * @header: (allow-none):
+ * @header: (allow-none): the header, or %NULL
*
* Sets the current header of the @row. This is only allowed to be called
* from a @GtkListBoxUpdateSeparatorFunc. It will replace any existing
*/
void
gtk_list_box_row_set_header (GtkListBoxRow *row,
- GtkWidget *header)
+ GtkWidget *header)
{
if (row->priv->header)
g_object_unref (row->priv->header);
g_object_ref (header);
}
-
static void
gtk_list_box_row_finalize (GObject *obj)
{
#error "Only <gtk/gtk.h> can be included directly."
#endif
-#include <gtk/gtkscrolledwindow.h>
+#include <gtk/gtkbin.h>
G_BEGIN_DECLS
#define GTK_IS_LIST_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_LIST_BOX))
#define GTK_LIST_BOX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_LIST_BOX, GtkListBoxClass))
-typedef struct _GtkListBox GtkListBox;
-typedef struct _GtkListBoxClass GtkListBoxClass;
+typedef struct _GtkListBox GtkListBox;
+typedef struct _GtkListBoxClass GtkListBoxClass;
typedef struct _GtkListBoxPrivate GtkListBoxPrivate;
-typedef struct _GtkListBoxRow GtkListBoxRow;
-typedef struct _GtkListBoxRowClass GtkListBoxRowClass;
+typedef struct _GtkListBoxRow GtkListBoxRow;
+typedef struct _GtkListBoxRowClass GtkListBoxRowClass;
typedef struct _GtkListBoxRowPrivate GtkListBoxRowPrivate;
struct _GtkListBox
{
GtkContainerClass parent_class;
- void (*row_selected) (GtkListBox* list_box, GtkListBoxRow* row);
- void (*row_activated) (GtkListBox* list_box, GtkListBoxRow* row);
- void (*activate_cursor_row) (GtkListBox* list_box);
- void (*toggle_cursor_row) (GtkListBox* list_box);
- void (*move_cursor) (GtkListBox* list_box, GtkMovementStep step, gint count);
+ void (*row_selected) (GtkListBox *list_box,
+ GtkListBoxRow *row);
+ void (*row_activated) (GtkListBox *list_box,
+ GtkListBoxRow *row);
+ void (*activate_cursor_row) (GtkListBox *list_box);
+ void (*toggle_cursor_row) (GtkListBox *list_box);
+ void (*move_cursor) (GtkListBox *list_box,
+ GtkMovementStep step,
+ gint count);
/* Padding for future expansion */
void (*_gtk_reserved1) (void);
void (*_gtk_reserved6) (void);
};
-#define GTK_TYPE_LIST_BOX_ROW (gtk_list_box_row_get_type ())
-#define GTK_LIST_BOX_ROW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_LIST_BOX_ROW, GtkListBoxRow))
-#define GTK_LIST_BOX_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_LIST_BOX_ROW, GtkListBoxRowClass))
-#define GTK_IS_LIST_BOX_ROW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_LIST_BOX_ROW))
+#define GTK_TYPE_LIST_BOX_ROW (gtk_list_box_row_get_type ())
+#define GTK_LIST_BOX_ROW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_LIST_BOX_ROW, GtkListBoxRow))
+#define GTK_LIST_BOX_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_LIST_BOX_ROW, GtkListBoxRowClass))
+#define GTK_IS_LIST_BOX_ROW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_LIST_BOX_ROW))
#define GTK_IS_LIST_BOX_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_LIST_BOX_ROW))
-#define GTK_LIST_BOX_ROW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_LIST_BOX_ROW, GtkListBoxRowClass))
+#define GTK_LIST_BOX_ROW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_LIST_BOX_ROW, GtkListBoxRowClass))
struct _GtkListBoxRow
{
/**
* GtkListBoxFilterFunc:
- * @row: The row that may be filtered.
- * @user_data: (closure): user data.
+ * @row: the row that may be filtered
+ * @user_data: (closure): user data
*
* Will be called whenever the row changes or is added and lets you control
* if the row should be visible or not.
*
* Since: 3.10
*/
-typedef gboolean (*GtkListBoxFilterFunc) (GtkListBoxRow * row,
- gpointer user_data);
+typedef gboolean (*GtkListBoxFilterFunc) (GtkListBoxRow *row,
+ gpointer user_data);
+
/**
* GtkListBoxSortFunc:
- * @row1: The first row.
- * @row2: The second row.
- * @user_data: (closure): user data.
+ * @row1: the first row
+ * @row2: the second row
+ * @user_data: (closure): user data
*
* Compare two rows to determin which should be first.
*
- * Returns: < 0 if @row1 should be before @row2, 0 if they are equal and > 0 otherwise
+ * Returns: < 0 if @row1 should be before @row2, 0 if they are
+ * equal and > 0 otherwise
*
* Since: 3.10
*/
typedef gint (*GtkListBoxSortFunc) (GtkListBoxRow *row1,
GtkListBoxRow *row2,
gpointer user_data);
+
/**
* GtkListBoxUpdateHeaderFunc:
- * @row: The row to update
- * @before: The row before @row, or %NULL if it is first.
- * @user_data: (closure): user data.
+ * @row: the row to update
+ * @before: the row before @row, or %NULL if it is first
+ * @user_data: (closure): user data
*
- * Whenever @row changes or which row is before @row changes this is called, which
- * lets you update the header on @row. You may remove or set a new one
- * via gtk_list_box_row_set_header() or just change the state of the current
- * header widget.
+ * Whenever @row changes or which row is before @row changes this
+ * is called, which lets you update the header on @row. You may
+ * remove or set a new one via gtk_list_box_row_set_header() or
+ * just change the state of the current header widget.
*
* Since: 3.10
*/
GtkListBoxRow* gtk_list_box_get_selected_row (GtkListBox *list_box);
GDK_AVAILABLE_IN_3_10
GtkListBoxRow* gtk_list_box_get_row_at_index (GtkListBox *list_box,
- int index);
+ gint index_);
GDK_AVAILABLE_IN_3_10
GtkListBoxRow* gtk_list_box_get_row_at_y (GtkListBox *list_box,
gint y);